Recently there has been a surge in the number of wireless and mobile network devices and applications. For a developer of such devices and applications, it is important that the devices and applications be fully tested before being rolled out to the consumer. One important aspect of testing such devices and applications is to perform testing within the network environment in which the devices and applications will be operating.
In order to adequately test devices and applications in a network environment, a number of aspects should be considered. For example, network testing involves parameters outside the control of the device or application itself, such as network connectivity, available bandwidth, congestion, etc. Also, because of the shared nature of most wireless and wired networks, network parameters such as available bandwidth and congestion can vary from time to time. In addition, with wireless devices and applications, network conditions also vary as the devices and applications move through the environment.
Testing of devices and applications can involve simulation, emulation, live testing, or combinations. Live testing can be useful as it is done in a live environment with real-world conditions. However, with live testing, controllability and reproducibility are difficult to manage. Simulation can also be useful, and provides controllable, repeatable, and scalable testing. However, simulation does not necessarily reflect reality, or the varying conditions that will be encountered in a live environment. Emulation can provide a middle ground for testing, as it can be performed using actual devices and applications. However, emulation utilities typically provide only limited control over the testing environment, such as fixed values for parameters, such as fixed bandwidth.
Therefore, there exists ample opportunity for improvement in technologies related to network emulation for testing devices and/or applications.